package com.yxy.f_music_server.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

// @Configuration表示为配置类，Spring会扫描并加载这个类中的配置
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {

//    @Autowired
//    private JwtTokenAdminInterceptor jwtTokenAdminInterceptor;
//    @Autowired
//    private JwtTokenUserInterceptor jwtTokenUserInterceptor;
//
//    /**
//     * 注册自定义拦截器
//     *
//     * @param registry
//     */
//    @Override
//    protected void addInterceptors(InterceptorRegistry registry) {
//        log.info("开始注册自定义拦截器...");
//        registry.addInterceptor(jwtTokenAdminInterceptor)
//                .addPathPatterns("/tourism/admin/**")
//                .excludePathPatterns("/tourism/admin/administrator/login")
//                .excludePathPatterns("/tourism/common/**");
//        registry.addInterceptor(jwtTokenUserInterceptor)
//                .addPathPatterns("/sports/mobile/**")
//                .excludePathPatterns("/sports/common/**")
//                .excludePathPatterns("/sports/mobile/user/login")
//                .excludePathPatterns("/sports/mobile/user/register")
//                .excludePathPatterns("/sports/mobile/user/verifyPhone")
//                .excludePathPatterns("/sports/mobile/user/resetPwd")
//                .excludePathPatterns("/sports/mobile/sign/verifySign")
//                .excludePathPatterns("/sports/mobile/sign/incentiveList")
//                .excludePathPatterns("/sports/mobile/resources")
//                .excludePathPatterns("/sports/mobile/banner")
//                .excludePathPatterns("/sports/mobile/user/modify/{id}");
//    }

    /**
     * 配置跨域
     * @param registry 注册表对象，用于添加CORS配置
     */
    @Override
    // addCorsMappings 方法用于配置CORS（Cross-Origin Resource Sharing，跨域资源共享）
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")   // 用于指定哪些路径需要启用CORS支持，，/salary/** 表示所有以 /salary/ 开头的路径都会启用CORS支持
                .allowedOrigins("*")    // 用于指定允许跨域请求的源
                // 浏览器在发送实际请求之前会先发送一个预检请求（Preflight Request），以确认服务器是否允许该跨域请求。预检请求通常是一个 OPTIONS 请求
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 用于指定允许的HTTP方法
                .allowedHeaders("*");    // 用于指定允许的请求头，* 表示允许所有请求头
    }
}
